package com.irdstudio.apicenter.gateway.util.spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.irdstudio.apicenter.gateway.web.MaccsException;
/**
 * 
 * Spring bean 工具
 * 
 * <p>
 * 初始化 ApplicationContext以及获取bean 对象
 * 
 * <p>
 * 提供统一的标准的获取 Spring bean 的方法
 * 
 * @author ZhangHao
 * @version 1.0
 * @date 2015-06-04
 *
 */
public class BeanUtils {

	private static ApplicationContext ac;
	static {
		String[] configLocations = new String[1];
		configLocations[0] = "classpath:applicationContext.xml";
		ac=new ClassPathXmlApplicationContext(configLocations);
	}


	/**
	 * 通过beanId 获取 bean 对象（返回Object)
	 * @param beanId
	 * @return
	 */
	public static Object getBean(String beanId) {
		return ac.getBean(beanId);
	}
	
	/**
	 * 通过beanId 获取 bean 对象（返回指定对象）
	 * @param beanId
	 * @param cla
	 * @return
	 */
	public static <T> T getBean(String beanId, Class<T> paramClass) {
		return ac.getBean(beanId, paramClass);
	}
	
	
	/**
	 * 通过class 获取 bean 对象（返回指定对象）
	 * @param beanId
	 * @param cla
	 * @return
	 */
	public static <T> T getBean( Class<T> paramClass) {
		return ac.getBean( paramClass);
	}
	
	
	public static void checkApplicationContext() throws MaccsException{
		if (ac == null)
			throw new MaccsException("ApplicationContext 未进行初始化,请检查 applicationContext.xml 相关配置");
	}
	
}
